package sv.com.globalsolutionslt.manejador;


import sv.com.globalsolutionslt.controlador.PublicacionFacade;
import java.util.ArrayList;
import java.util.Date;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import sv.com.globalsolutionslt.controlador.DetallePublicacionFacade;
import sv.com.globalsolutionslt.controlador.EstadoPublicacionFacade;
import sv.com.globalsolutionslt.entidades.AreaEmpresa;
import sv.com.globalsolutionslt.entidades.DetallePublicacion;
import sv.com.globalsolutionslt.entidades.Empresa;
import sv.com.globalsolutionslt.entidades.EstadoPublicacion;
import sv.com.globalsolutionslt.entidades.Publicacion;

@ManagedBean
@SessionScoped
public class PublicacionHistorialMB {
    @EJB
    private DetallePublicacionFacade detallePublicacionFacade;
    @EJB
    private EstadoPublicacionFacade estadoPublicacionFacade;
    @EJB
    private PublicacionFacade publicacionFacade;
    
    private Empresa empresa;
    private Publicacion publicacion;
    private AreaEmpresa areaEmpresa; 
    private DetallePublicacion detallePublicacion;
    private EstadoPublicacion estadoPublicacionFiltro;
    private Date fechReg;

    private double pg;
    private int index;
    private String descripcion;
    private ArrayList<String> descripciones;
    
    
    private  String permitirRegistrar="";
    
    public PublicacionHistorialMB() {
        
        publicacion= new Publicacion();
        areaEmpresa= new AreaEmpresa();
        estadoPublicacionFiltro= new EstadoPublicacion();
        fechReg= null;
        pg=0;
    }
    
    
    public Empresa getEmpresa() {return empresa;}

    public String getPermitirRegistrar() {

        if(descripciones.isEmpty())
            permitirRegistrar="true";
        else
            permitirRegistrar="false";
            
        return permitirRegistrar;
    }
    
    public Publicacion getPublicacion() {return publicacion;}
    public void setPublicacion(Publicacion publicacion) {this.publicacion = publicacion;}

    public AreaEmpresa getAreaEmpresa() {return areaEmpresa;}
    public void setAreaEmpresa(AreaEmpresa areaEmpresa) {this.areaEmpresa = areaEmpresa;}

    public String getDescripcion() {return descripcion;}
    public void setDescripcion(String descripcion) {this.descripcion = descripcion;}

    public ArrayList<String> getDescripciones() {return descripciones;}
    public void setDescripciones(ArrayList<String> descripciones) {this.descripciones = descripciones;} 

    public DetallePublicacion getDetallePublicacion() {return detallePublicacion;}
    public void setDetallePublicacion(DetallePublicacion detallePublicacion) {this.detallePublicacion = detallePublicacion;}        

        public double getPg() {return pg;}

    public EstadoPublicacion getEstadoPublicacionFiltro() {return estadoPublicacionFiltro;}
    public void setEstadoPublicacionFiltro(EstadoPublicacion estadoPublicacionFiltro) {this.estadoPublicacionFiltro = estadoPublicacionFiltro;}

    public Date getFechReg() {return fechReg;}
    public void setFechReg(Date fechReg) {this.fechReg = fechReg;}    
    
    public String prepararHistorial(Empresa e){                
        empresa= e; 
        publicacion= new Publicacion();
        areaEmpresa= new AreaEmpresa();
        estadoPublicacionFiltro= new EstadoPublicacion();
        fechReg= null;
        
        return "/empresa/historialPublicacion";
    }
    public String prepararHistorial(){                
        return "/empresa/historialPublicacion";
    }    
    public void PreparaVer(Publicacion p){
        publicacion= new Publicacion();
        areaEmpresa= new AreaEmpresa();
        publicacion= p;
    }
    public void PrepararEditar(Publicacion p){        
        publicacion= p;
        areaEmpresa= publicacion.getIdTipoCargo().getIdAreaEmpresa();
    }    
    
    public void registrarPublicacion() throws Exception{        
        
        publicacion.setFechaMod(new Date());
        publicacion.setUsuarioMod(empresa.getIdUsuario().getIdUsuario().intValue());
        publicacion.setIdEmpresa(empresa);
        publicacion.setIdEstadoPublicacion(estadoPublicacionFacade.encontrarPorID(new Integer("1")));        
        publicacionFacade.modificar(publicacion);
    }
        
    public void prepararDescripcion(){
        detallePublicacion= new DetallePublicacion();
        detallePublicacion.setIdPublicacion(publicacion);
    }    
    public void DetallePublicacionNuevo() throws Exception{        
        publicacion.getDetallePublicacionList().add(detallePublicacion);
        publicacionFacade.modificar(publicacion);
    }
    
    public void prepEliminarRq(DetallePublicacion d){detallePublicacion=d;}
    public void eliminarRq() throws Exception{
        detallePublicacionFacade.remover(detallePublicacion);
        publicacion.getDetallePublicacionList().remove(detallePublicacion);
        publicacionFacade.modificar(publicacion);
    }     
    public void inicio(){         
        pg=0;  
        prepararHistorial();
    }
    public void fin(){   
        pg= Math.ceil(publicacionFacade.CantidadPublicacionePE(empresa.getIdEmpresa(), estadoPublicacionFiltro)/10.0)-1;      
        prepararHistorial();
    }   
    public void siguiente(){        
        if((Math.ceil(publicacionFacade.CantidadPublicacionePE(empresa.getIdEmpresa(), estadoPublicacionFiltro)/10.0)-1)!=pg)
            pg+=1;       
        prepararHistorial();        
    }     
    public void atras(){        
        if(pg!=0)
            pg-=1;    
        prepararHistorial();        
    }
    public String TipoIcono(Integer i){
        String icon="";                
        if(i.intValue()==1) icon="ui-icon-locked";
        else if (i.intValue()==2) icon="ui-icon-unlocked";          
        return icon;
    }
    public String TipoMensaje(Integer i){
        String mj="";                
        if(i.intValue()==1) mj="Cerrar Proceso de Selección";
        else if (i.intValue()==2) mj="Abrir Proceso de selección";          
        return mj;
    }  
    public void CambioEstado(Publicacion p) throws Exception{
    
        if(p.getIdEstadoPublicacion().getIdEstadoPublicacion().intValue()==1){
            p.setIdEstadoPublicacion(estadoPublicacionFacade.encontrarPorID(new Integer("2")));        
        }
        else if(p.getIdEstadoPublicacion().getIdEstadoPublicacion().intValue()==2){
            p.setIdEstadoPublicacion(estadoPublicacionFacade.encontrarPorID(new Integer("1")));   
        }

        
        publicacionFacade.modificar(p);
    }
    
}